
;(function($, window, document, undefined) {
	var timer = null;//轮询请求定时器
	$.extend({
		//初始化dom
		initPage:function(){
			$.layoutTable();//拖拽布局
			$.Diy();//个性化定制，初始所有图表
			$.getStyle_color();//获取皮肤样式
			//监听模态框点击
			$.modalEvent();
			//计数特效
//			$.superCount();

			//获取迟到数据
			$.getBeLate("");
//			//获取早退数据
			$.getLeaveEarly("");
//			//获取旷工数据
			$.getAbsenteeism("");
//			//获取在校数据
			$.getOnSchool("");

			//获取未到校数据
			$.getNoOnSchool("");
			
			//获取在岗时长数据
			$.getWorkingTime("");
						
			//节点课时监听请求
//			$.nodeEvent();

			//刷新监听请求
			$.reloadEvent();

			//轮询请求
//			$.longRequest();

			//显示课程表
			$.getTimeTable();
			
			//调用表格插件
			$.initTablePlug($("#workingTimeBox table"));
		},
		
		//拖拽布局
		layoutTable:function(){
			$( "#layoutContainer" ).sortable({
		      connectWith: "#layoutContainer",
		      handle: ".portlet-title",//指定拖拽的选择器
		      cancel: ".collapse,.remove,.reload",//禁用拖拽的选择器
		    });
		 
		},
		//获取个性化配置数据
		getConfing:function(){
			var aForm = $("#diyForm").serializeArray();
			var oMain = {
				layout:"",
				module:[]
			};
			$.each(aForm, function(i,v) {
				if(v.name == "module"){
					oMain.module.push(v.value);
				}
				if(v.name == "layout"){
					oMain.layout = v.value;
				}
			});
			
			return oMain;
		},
		/*
		 渲染个性化的布局
		 @param oLayoutMsg {object} 个性化定制数据配置
		 * */
		layoutLoad:function(oLayoutMsg){
			$("#layoutContainer>div").each(function(){
				this.classList = oLayoutMsg.layout + " col-xs-12";
				$(this).addClass("hide");
				$.each(oLayoutMsg.module, function(k,e) {
					$("#"+e).removeClass("hide");
				});
			});
	
		    //回显配置开关
		    $("input[value="+oLayoutMsg.layout+"]").prop("checked",true).parent().siblings("label").find("input[type=radio]").prop("checked",false);
		    $("#moduleBox input[type=checkbox]").prop("checked",false);
		    $.each(oLayoutMsg.module, function(i,v) {
		    	$("input[value="+v+"]").prop("checked",true);
		    });
		},
		//个性化定制,初始化个性化配置，保存配置
		Diy:function(){
			//初始化工作台布局和功能配置
			var layoutMsg = {
				layout:"col-sm-6",
				module:[
					"beLateBox",
					"leaveEarlyBox",
					"absenteeismBox",
					"onSchoolBox"
				]
			};
			//已经定制的布局
			if(typeof JSON.parse(localStorage.getItem("layoutMsg")) == "object"){
				layoutMsg = JSON.parse(localStorage.getItem("layoutMsg"));
				console.log(layoutMsg);
				$.layoutLoad(layoutMsg);
			}
			//配置改变监听
			$("#Diy input[type=checkbox],#Diy input[type=radio]").on("change",function(){
				var oMain = $.getConfing();
				console.log(oMain);
				$.layoutLoad(oMain);
				
			});
			//点击保存
			$(".btn-save-confing").on("click",function(){
				var oMain = $.getConfing();
				var userMsg = JSON.parse(localStorage.getItem("userMsg"));//存用户信息
				oMain.uid = userMsg.id;
				//后台请求
				fnAjax.method_4(
					url_join("free/layout"),
					oMain,
					"post",
					function(data){
						console.log(data);
						layer.msg("操作成功",{time:1000},function(){
							var lm = JSON.stringify(oMain);
							localStorage.setItem("layoutMsg",lm);
							$("#layoutOption").modal("toggle");
						});
					}
				);
			});
		},		
		//获取皮肤样式       
		getStyle_color:function(){
			console.log($.cookie('style_color'));
			if($.cookie('style_color')){
				$(".portlet").each(function(i){
					this.classList = "portlet box "+$.cookie('style_color');
				});
			}
			else{
				$(".portlet").each(function(i){
					this.classList = "portlet box default";
				});
			}
		},
		//监听模态框点击
		modalEvent:function(){
			//打开个性化定制工具
			$(".btn-cofing").on("click",function(){
				$("#layoutOption").modal("toggle");
			});
		},
		/**
		 * 计数特效
		 * @param {Object} container 数据所在模块的jq选择器
		 * */
		superCount:function(container){
			if(container.find("span.superCount").length > 0){
				container.find("span.superCount").counterUp({
					delay: 10, // the delay time in ms
					time: 1000 // the speed time in ms
				});
			}
		},
				
		/**
		 * 获取迟到数据
		 * 接收数据
		 * @prop {String} data.percent 占比概率
		 * @prop {Number} data.num 占比数
		 * @prop {Number} data.total 总数
		 * @prop {Number} data.state 占比概率是否上升下降的状态
		 * @prop {Number} data.class_hour 下一节课是第几节课
		 * @param {Array} data.list 迟到数据列表（姓名，科组，打卡时间，id，课表详情）
		 * */
		
		getBeLate:function(oData){
			fnAjax.method_4(
				url_join("attendance/later"),
				oData,
				"post",
				function(data){
					console.log("迟到数据",data);
					//主要数据（数组）
					$.createTable_1(data.data.list,$("#beLateBox table"));						
					
					var oStatic = {
						proportion:data.data.percent,
						proportion_num:data.data.num,
						total:data.data.total,
						state:data.data.state,
						node:data.data.class_hour
					};
					$.createSuperCount($("#beLateBox"),oStatic,oData);
						
				}
			);
		},		
		
		//获取早退数据
		getLeaveEarly:function(oData){
			fnAjax.method_4(
				url_join("attendance/early"),
				oData,
				"post",
				function(data){
					//主要数据（数组）
					console.log("早退数据",data);
					$.createTable_1(data.data.list,$("#leaveEarlyBox table"));
					
					var oStatic = {
						proportion:data.data.percent,
						proportion_num:data.data.num,
						total:data.data.total,
						state:data.data.state,
						node:data.data.class_hour
					};
					$.createSuperCount($("#leaveEarlyBox"),oStatic,oData);
				}
			);
		},
		//获取旷工数据
		getAbsenteeism:function(oData){
			fnAjax.method_4(
				url_join("attendance/absenteeism"),
				oData,
				"post",
				function(data){
					//主要数据（数组）
					console.log("旷工数据",data);
					$.createTable_1(data.data.list,$("#absenteeismBox table"));
					
					var oStatic = {
						proportion:data.data.percent,
						proportion_num:data.data.num,
						total:data.data.total,
						state:data.data.state,
						node:data.data.class_hour
					};
					$.createSuperCount($("#absenteeismBox"),oStatic,oData);
				}
			);
		},
		//获取在校数据
		getOnSchool:function(oData){
			fnAjax.method_4(
				url_join("attendance/appear"),
				oData,
				"post",
				function(data){
					//主要数据（数组）
					console.log("到校数据",data);
					$.createTable_2(data.data.list,$("#onSchoolBox table"));						
					
					var oStatic = {
						proportion:data.data.percent,
						proportion_num:data.data.num,
						total:data.data.total,
						state:(data.data.state ? data.data.state : 0),
						node:(data.data.class_hour ? data.data.class_hour : "")
					};
					$.createSuperCount($("#onSchoolBox"),oStatic,oData);
						
				}
			);
		},
		
		//获取未到校数据
		getNoOnSchool:function(oData){
			fnAjax.method_4(
				url_join("attendance/disappear"),
				oData,
				"post",
				function(data){
					//主要数据（数组）
					console.log("未到校数据",data);
					$.createTable_2(data.data.list,$("#noOnSchoolBox table"));						
					
					var oStatic = {
						proportion:data.data.percent,
						proportion_num:data.data.num,
						total:data.data.total,
						state:(data.data.state ? data.data.state : 0),
						node:(data.data.class_hour ? data.data.class_hour : "")
					};
					$.createSuperCount($("#noOnSchoolBox"),oStatic,oData);
						
				}
			);
		},
		//获取在岗时长数据
		getWorkingTime:function(oData){
			fnAjax.method_4(
				url_join("attendance/hours"),
				oData,
				"post",
				function(data){
					//主要数据（数组）
					console.log("在岗时长数据",data);
					
					$.createTable_3(data.data.list,$("#workingTimeBox table"));						
					
//					var oStatic = {
//						proportion:data.data.percent,
//						proportion_num:data.data.num,
//						total:data.data.total,
//						state:(data.data.state ? data.data.state : 0),
//						node:(data.data.class_hour ? data.data.class_hour : "")
//					};
//					$.createSuperCount($("#workingTimeBox"),oStatic,oData);
//						
				}
			);
		},
		
		/**
		 *创建迟到,早退，旷工，未到校，表格
		 * @param {Array} aData 主数据
		 * @param {Object} oContainer 渲染表格容器
		 * */
		createTable_1:function(aData,oContainer){			
			oContainer.find("tbody tr").remove();
			if(aData.length > 0){
				$.each(aData, function(i,v) {
					var trs = '<tr class="text-c" data-id="'+ v.uid +'">'+													
//								'<td class="">'+ v.username +'</td>'+
								'<td class="">'+ $.listState(v.status,v.username) +'</td>'+
								'<td class="">'+ ((v.group_names != null) ? v.group_names : "暂无") +'</td>'+
								'<td class="'+ (((v.work_at && v.work_at != null)|| (v.today && v.today != null))? "" : "hide") +'">'+ (v.work_at || v.today)+'</td>'+
								'<td>'+
									'<a href="javascript:;" class="showTimetable">点击查看课程表</a>'+
								'</td>'+
							'</tr>';
					oContainer.find("tbody").append($(trs));
				});
			}
			else{
				oContainer.find("tbody").append($('<tr class="text-c"><td colspan="4">暂无数据</td></tr>'));
			}
		},
		/**
		 *创建到校表格
		 * @param {Array} aData 主数据
		 * @param {Object} oContainer 渲染表格容器
		 * */
		createTable_2:function(aData,oContainer){
			oContainer.find("tbody tr").remove();
			if(aData.length > 0){
				$.each(aData, function(i,v) {
					var trs = '<tr class="text-c" data-id="'+ v.id +'">'+													
//								'<td class="">'+ v.username +'</td>'+
								'<td class="">'+ $.listState(v.status,v.username) +'</td>'+
								'<td class="">'+ ((v.group_names != null) ? v.group_names : "暂无") +'</td>'+
								'<td class="'+ (v.count ? "" : "hide") +'">'+ v.count +'</td>'+
								'<td>'+
									'<a href="javascript:;" class="showTimetable">点击查看课程表</a>'+
								'</td>'+
							'</tr>';
					oContainer.find("tbody").append($(trs));
				});
			}
			else{
				oContainer.find("tbody").append($('<tr class="text-c"><td colspan="4">暂无数据</td></tr>'));
			}
			
		},
		/**
		 *创建在岗时长表格
		 * @param {Array} aData 主数据
		 * @param {Object} oContainer 渲染表格容器
		 * */
		createTable_3:function(aData,oContainer){
			oContainer.find("tbody tr").remove();
			if(aData.length > 0){
				$.each(aData, function(i,v) {
					var trs = '<tr class="text-c" data-id="'+ v.id +'">'+													
//								'<td class="">'+ v.username +'</td>'+
								'<td class="">'+ $.listState(v.status,v.username) +'</td>'+
								'<td class="">'+ ((v.group_names != null) ? v.group_names : "暂无") +'</td>'+
								'<td class="">'+ v.hours +'</td>'+
								'<td>'+
									'<a href="javascript:;" class="showTimetable">点击查看课程表</a>'+
								'</td>'+
							'</tr>';
					oContainer.append($(trs));
				});
			}
			else{
				oContainer.find("tbody").append($('<tr class="text-c"><td colspan="4">暂无数据</td></tr>'));
			}
			
		},
		/**
		 * 判断是否黑红名单，返回对应状态badge
		 * @param {Number} nState 教职工红黑名单状态 ，0为正常，1 为红名单，2为黑名单
		 * @param {String} sName 教职工名称
		 * */
		listState:function(nState,sName){
			switch (nState){
				case "0":
					return '<span class="label label-info">'+ sName +'</span>';
					break;
				case "1":
					return '<span class="label label-danger">'+ sName +'</span>';
					break;
				default:
					return '<span class="label label-default">'+ sName +'</span>';
					break;
			}
		},
		/**
		 * 渲染计数dom
		 * @param {Object} oContainer 数据所在模块的jq选择器
		 * @param {String||Object} oRequest 请求的数据
		 * @param {Object} oData 渲染计数的主要数据	
		 * @prop {String} oData.proportion 占比概率
		 * @prop {Number} oData.proportion_num 占比数
		 * @prop {Number} oData.total 总数
		 * @prop {Number} oData.state 占比概率是否上升下降的状态
		 * @prop {Number} oData.node 下一节课是第几节课
		 * */
		createSuperCount:function(oContainer,oData,oRequest){
			//概率
			$(oContainer).find(".proportion .h2-count .superCount").text(oData.proportion);
			//概率状态
			if(oData.state == 1){//上升
				$(oContainer).find(".proportion .state-type").removeClass("glyphicon-arrow-down").addClass("glyphicon-arrow-up");				
			}else if(oData.state == -1){
				$(oContainer).find(".proportion .state-type").removeClass("glyphicon-arrow-up").addClass("glyphicon-arrow-down");	
			}else{
				$(oContainer).find(".proportion .state-type").removeClass("glyphicon-arrow-up").removeClass("glyphicon-arrow-down").removeClass("glyphicon");
			}
			//占比数
			$(oContainer).find(".proportion-num .h2-count .superCount").text(oData.proportion_num);
			//总数
			$(oContainer).find(".proportion-total .h2-count .superCount").text(oData.total);
			//第几节课
			if(oData.node == null || oData.node == ""){
				oContainer.find(".nodeLabel").addClass("hide");
			}
			else{
				oContainer.find(".nodeLabel").text(oData.node);
			}
			
			//计数特效初始化
			$.superCount(oContainer);
			
			//判断是否请求课时或者整天
			if(oRequest != ""){//请求课时节点	
				oContainer.find(".btn-onDay").removeClass("active").siblings().addClass("active");
			}else{
				oContainer.find(".btn-onDay").addClass("active").siblings().removeClass("active");
			}
		},
		//监听几大模块的刷新数据
		reloadEvent:function(){
			$("#beLateBox .reload").on("click",function(){
				//获取迟到数据
				$.getBeLate("");
			});
			$("#leaveEarlyBox .reload").on("click",function(){
				//获取早退数据
				$.getLeaveEarly("");
			});
			$("#absenteeismBox .reload").on("click",function(){
				//获取旷工数据
			$.getAbsenteeism("");
			});
			$("#onSchoolBox .reload").on("click",function(){
				//获取在校数据
				$.getOnSchool("");
			});
			
			$("#noOnSchoolBox .reload").on("click",function(){
				//获取未到校数据
				$.getNoOnSchool("");
			});
			
			$("#workingTimeBox .reload").on("click",function(){
				//获取在岗时长数据
				$.getWorkingTime("");
			});
		},
		//监听几大模块的节课数据
		nodeEvent:function(){
			$("#beLateBox .btn-onNode").on("click",function(){
				//获取迟到数据{node:true}请求某节课数据的标示
				$.getBeLate({node:true});
			});
//			$("#leaveEarlyBox .btn-onNode").on("click",function(){
//				//获取早退数据
//				$.getLeaveEarly({node:true});
//			});
//			$("#absenteeismBox .btn-onNode").on("click",function(){
//				//获取旷工数据
//				$.getAbsenteeism({node:true});
//			});
//			$("#onSchoolBox .btn-onNode").on("click",function(){
//				//获取在校数据
//				$.getOnSchool({node:true});
//			});
		},
		//轮询请求数据
		longRequest:function(){
			timer = setInterval(function(){
//				//获取迟到数据
//				$.getBeLate("");
//				//获取早退数据
//				$.getLeaveEarly("");
//				//获取旷工数据
//				$.getAbsenteeism("");
//				//获取在校数据
//				$.getOnSchool("");
//				//获取未到校数据
//				$.getNoOnSchool("");
//				//获取在岗时长数据
//				$.getWorkingTime("");
				
				window.location.reload();
			},1000*60*1);
		},
		//显示课程表
		getTimeTable:function(){
			$("body").on("click",".showTimetable",function(){
				var nId = $(this).parents("tr").attr("data-id");
				var teacherName = $(this).parents("tr").children("td:first-child").text();
				localStorage.setItem("nId",nId);
				localStorage.setItem("teacherName",teacherName);
//				layer.open({
//					type: 2,
//				    title: "查看课程表",
//				    area: ['100%', '100%'],
//				    shade: 0.8,
//				    closeBtn: 1,
//				    shadeClose: true,
//				    content: 'Timetable.html',
//					end:function(){
//						
//					}
//				})
				window.open("Timetable.html","_blank");
				
			});
		},
		//调用表格插件
		initTablePlug:function(container){
			container.bootstrapTable({			
				columns: [
					{
						sortable: true,
					}, 
					{
						sortable: true,
					},
					{
						sortable: true,
						sorter: function(a, b) { //自定义排序
							var a = a.replace("小时","")*1;
							var b = b.replace("小时","")*1;
							return a - b;
						}
					}, 
					{
					}
				],
			});
		}
	});
})(jQuery, window, document);

 